package com.itbaizhan.openhis.service;

import com.itbaizhan.openhis.domain.Menu;
import com.baomidou.mybatisplus.extension.service.IService;
import com.itbaizhan.openhis.domain.SimpleUser;
import com.itbaizhan.openhis.dto.MenuDto;

import java.util.List;

/**
* @author MR
* @description 针对表【sys_menu(菜单权限表)】的数据库操作Service
* @createDate 2025-06-29 21:52:25
*/
public interface MenuService extends IService<Menu> {

	
	/**
	 * 查询菜单信息
	 * 如查用户是超级管理员，那么查询所以菜单和权限
	 * 如果用户是普通用户，那么根据用户ID关联角色和权限
	 * @param isAdmin 是否是超级管理员
	 * 如果isAdmin=true  simpleUser可以为空
	 */
	List<Menu> selectMenuTree(boolean isAdmin);
	
	/**
	 * 查询菜单数据
	 * @param menuDto
	 * @return
	 */
	List<Menu> listAllMenus(MenuDto menuDto);
	
	/**
	 * 根据菜单ID判断有没有子节点
	 * @param menuId
	 * @return  true 说明有  false没有
	 */
	boolean hasChildByMenuId(Long menuId);
	
	/**
	 * 根据角色ID查询菜单权限ID数据
	 * @param roleId
	 * @return
	 */
	List<Long> getMenuIdsByRoleId(Long roleId);
	
	/**
	 * 根据菜单id查询菜单信息
	 * @param menuId
	 * @return
	 */
	Menu getOne(Long menuId);
	
	/**
	 * 添加菜单权限
	 * @param menuDto
	 * @return
	 */
	int addMenu(MenuDto menuDto);
	/**
	 * 修改菜单权限
	 * @param menuDto
	 * @return
	 */
	int updateMenu(MenuDto menuDto);
	/**
	 * 删除菜单权限
	 * @param menuId
	 * @return
	 */
	int deleteMenuById(Long menuId);
}
